package com.example.littleken.ormlite_text.Utils;

import android.content.Context;
import android.graphics.Color;
import android.icu.util.Calendar;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.util.Log;

import com.example.littleken.ormlite_text.bean.LifeDiary;
import com.example.littleken.ormlite_text.db.DatabaseHelper;
import com.j256.ormlite.dao.Dao;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

/**工具类，为app提供各种静态方法
 * Created by littleken on 2018/6/20.
 */

public class Utils {
    /**
     * 获取数据库Dao对象
     * @param context
     * @return 数据库操作对象DAO
     */
    public static Dao initDb(Context context){
        DatabaseHelper databaseHelper;
        Dao lifediaryDAO = null;
        try {
            databaseHelper= DatabaseHelper.getInstance(context);
             lifediaryDAO = databaseHelper.getDao(LifeDiary.class);
        } catch (SQLException e) {
            Log.e("TAG","获取数据dao类拉闸");
            e.printStackTrace();
            return null;
        }
        return lifediaryDAO;
    }

    /**
     * 获取当前时间
     * @return 当前时间（具体毫秒数）
     */
    public static String getNowTime(){
        String time = String.valueOf(Calendar.getInstance().getTime().getTime());
        return time;
    }

    /**
     * item状态初始化
     * @param lifeDiaries 用于判断现在item的数目
     * @return 初始化好的item状态列表
     */
    public static boolean[] updateItems(List<LifeDiary>lifeDiaries){
        boolean[] newItems = new boolean[lifeDiaries.size()];
        for (int i = 0; i <newItems.length ; i++) {
            newItems[i] = false;
        }
        return newItems;
    }

    /**
     * 搜索框搜索方法
     * @param list 需要排序的List
     * @param key 关键字
     * @return 完成排序的List
     */
    public static List<LifeDiary> getSearchResult(List<LifeDiary> list, String key){
        List<LifeDiary> result = new ArrayList<LifeDiary>();
        for(int i=0;i<list.size();i++){
            LifeDiary lifeDiary = list.get(i);
            //题目包含
            if(lifeDiary.getTitle().toLowerCase().contains(key.toLowerCase())){
                result.add(lifeDiary);
                //内容包含
            }else if (lifeDiary.getMessage().toLowerCase().contains(key.toLowerCase())){
                result.add(lifeDiary);
            }
        }
        return  result;
    }

    /**
     * 用于判断是否有item被选中
     * @param flags item状态列表
     * @return 是否有被选中
     */
    public static boolean checkState(boolean[] flags){
        boolean flag = false;
        for(int i=0;i<flags.length;i++){
            if(flags[i]){
                flag = true;
                break;
            }
        }
        return flag;
    }

    /**
     * 搜索高亮
     * @param str 母串
     * @param key 子串
     */
    public static SpannableStringBuilder hightLightText(String str,String key){
        int start = str.toLowerCase().indexOf(key.toLowerCase());
        int end = start + key.length();
        /*Log.e("TAG",start+"");
        Log.e("TAG",end+"");*/
        SpannableStringBuilder sb = new SpannableStringBuilder(str);
        try{
            sb.setSpan(
                    new ForegroundColorSpan(Color.rgb(0,0,200)),
                    start,
                    end,
                    Spanned.SPAN_EXCLUSIVE_INCLUSIVE
            );
        }catch (Exception e){
//            e.printStackTrace();
            //防止title与message搜索冲突
            return new SpannableStringBuilder(str);
        }
        return  sb;
    }

    /**
     * 获得格式化时间
     * @param time 需要格式化的时间（具体毫秒数）
     * @return 完成格式化的时间
     */
    public static String getNomalTime(String time){
        Long time2 = Long.parseLong(time);
        Date date = new Date(time2);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//设置时区
        return sdf.format(date);
    }
}
